// 省市区地区数据API服务

export interface AreaItem {
  id: string;
  name: string;
  pid: string;
  level: number;
  children?: AreaItem[];
}

// 原始API数据可能的字段格式
export interface RawAreaItem {
  id?: string;
  code?: string;
  value?: string;
  areaCode?: string;
  name?: string;
  label?: string;
  areaName?: string;
  pid?: string;
  parentId?: string;
  parent?: string;
  parentCode?: string;
  level?: number;
  children?: RawAreaItem[];
  sub?: RawAreaItem[];
  subAreas?: RawAreaItem[];
}

export interface AreaCodeResponse {
  code?: number;
  message?: string;
  data: AreaItem[];
}

/**
 * 获取省市区地区数据
 */
export async function getAreaCodeData(): Promise<AreaCodeResponse> {
  try {
    // 在开发环境中使用代理路径，生产环境中使用完整URL
    const apiUrl = import.meta.env.DEV 
      ? '/api/jsondata/newAreaCodeV2024.json'
      : 'https://hongcat.oss-cn-chengdu.aliyuncs.com/jsondata/newAreaCodeV2024.json';
    
    const response = await fetch(apiUrl);
    
    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }
    
    const rawData = await response.json();
    console.log('原始API数据:', rawData);
    
    // 处理不同的数据格式
    let normalizedData: AreaCodeResponse;
    
    if (Array.isArray(rawData)) {
      // 如果直接返回数组
      normalizedData = {
        code: 200,
        message: '成功',
        data: rawData
      };
    } else if (rawData && typeof rawData === 'object') {
      // 如果返回对象，检查是否有data字段
      if (rawData.data && Array.isArray(rawData.data)) {
        normalizedData = {
          code: rawData.code || 200,
          message: rawData.message || '成功',
          data: rawData.data
        };
      } else if (rawData.code !== undefined) {
        // 有code字段但可能data不是数组
        normalizedData = {
          code: rawData.code,
          message: rawData.message || '数据格式错误',
          data: []
        };
      } else {
        // 假设整个对象就是数据
        normalizedData = {
          code: 200,
          message: '成功',
          data: [rawData]
        };
      }
    } else {
      throw new Error('API返回的数据格式不正确');
    }
    
    console.log('标准化后的数据:', normalizedData);
    return normalizedData;
  } catch (error) {
    console.error('获取地区数据失败:', error);
    throw error;
  }
}

/**
 * 根据省份ID获取城市列表
 */
export function getCitiesByProvinceId(provinces: AreaItem[], provinceId: string): AreaItem[] {
  const province = provinces.find(p => p.id === provinceId);
  return province?.children || [];
}

/**
 * 根据城市ID获取区县列表
 */
export function getDistrictsByCityId(cities: AreaItem[], cityId: string): AreaItem[] {
  const city = cities.find(c => c.id === cityId);
  return city?.children || [];
}